// 大模型相关API
import request from '@/utils/request'
import requestNew from '@/utils/request-thirdParty'

// ======================================== 通用大模型相关API ========================================

// 原网址：http://matterai.e3.luyouxia.net:12812
// 新网址：http://matterai.e3.luyouxia.net:11620

/*
  获取一个序列任务id
  因为对话是多个回合，这个id用于追踪整个对话过程，并查找历史记录。

  返回结果示例：
  {
    "message": "The new sequential task was successfully created.",
    "sequential_task_id": "55d4d96f-ab46-4410-b07e-7d3e4aee5795"
  }
*/
export const StartDialogue = () => {
  return requestNew({
    url: '/dialogue/start',
    method: 'get'
  })
}

/*
  对话任务
  需要输入上面的sequential_task_id用于追踪整个对话过程，还需要输入用户的输入query，比如“what is your name？”

  请求头：
  {
    "user_input": {
      "query": "string",
      "sequential_task_id": "string"
    }
  }

  返回：
  {
    "message": "Current task c52cb676-e7b3-462b-8887-5afbb8dc174f started.",
    "current_task_id": "c52cb676-e7b3-462b-8887-5afbb8dc174f",
    "status": "waiting"
  }

  这里会返回一个current_task_id，用于监控当前这轮对话是否完成，可以利用其查询对话状态（详见方法四）。
  当状态为done时，返回结果如下。

  返回：
  {
    "status": "done",
    "result": {
      "sequential_task_id": "34bd8d97-bc4c-4de7-ad75-9e4d088a99c9",
      "query": "What are the advantages of disordered lithium-rich cathode materials?",
      "current_answer": "Disordered lithium-rich cathode materials......",
      "history_record": ""
    }
  }
  多轮对话，确保sequential_task_id 一致。
*/
export const ConverSations = (data) => {
  return requestNew({
    url: '/dialogue/conversations',
    method: 'post',
    data
  })
}

/*
  自学习
  需要输入上面的sequential_task_id用于追踪整个对话过程，还需要输入用户的输入query,
  比如 “I hope you learn something about lithium ion battery electrolytes.？

  请求头：
  {
    "learning_input": {
      "query": "string",
      "sequential_task_id": "string"
    }
  }

  与方法二一样，同样先生成一个current_task_id，然后利用current_task_id查询结果。
  当任务状态done以后。

  返回：
  {
    "status": "done",
    "result": "Having searched and studied relevant papers, I have acquired knowledge of the subject area and we can discuss it further."
  }
*/
export const Self_Learning = (data) => {
  return requestNew({
    url: '/dialogue/self_learning',
    method: 'post',
    data
  })
}

/*
  能量预测

  请求头：
  {
    "learning_input": {
      "query": "string",
      "sequential_task_id": "string"
    }
  }

  与方法二一样，同样先生成一个current_task_id，然后利用current_task_id查询结果。
  当任务状态done以后。

  返回：
  {
    "message": "Current task {current_task_id},{current_task_id_1} started.",
    "current_task_id": current_task_id,
    "current_task_id_1": current_task_id_1,
    "status": task_dict[current_task_id_1]["status"]
  }
  current_task_id 用于接收一个图片。
  current_task_id_1 用于接收预测能量值。
*/
export const Energypre = (data) => {
  return requestNew({
    url: '/dialogue/energypre',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data;charset=UTF-8',
    },
    data
  })
}

/*
  当前对话任务状态查询
  注意，只能查询current_task_id。
  返回状态只有 runing 与 done 的时候，可以提取结果。
*/
export const DialogueStatus = id => {
  return requestNew({
    url: `/dialogue/status/${id}`,
    method: 'get'
  })
}

// 获取百度API服务的Token
export const BaiduAccessToken = () => {
  return request({
    url: '/api/BigModel/BaiduAccessToken',
    method: 'post'
  })
}

// 百度语音转文字
export const BaiduSpeechToText = (data) => {
  return request({
    url: '/api/BigModel/BaiduSpeechToText',
    method: 'post',
    data
  })
}

// // 百度语音转文字
// export const BaiduSpeechToTextApi = (token, data) => {
//   return request({
//     url: 'http://vop.baidu.com/server_api?cuid=ROBOT202401091116259&token='+token,
//     method: 'post',
//     headers: {
//       'Content-Type': 'audio/pcm;rate=16000',
//       'format': 'pcm',
//       'rate': 16000
//     },
//     body: {
//       data
//     }
//   })
// }
